home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / GravityWars.AMOS / GravityWars.amosSourceCode < prev    next >
Encoding:
AMOS Source Code  |  1998-06-10  |  3.2 KB  |  131 lines

  1. 'Load Iff "dh1:AmosGfx/GravityWars.iff",0
  2. 'For A=0 To 7
  3. '  For AA=0 To 31
  4. '    X=(AA mod 20)*16 : Y=((AA/20)+A*2)*16 
  5. '    Get Sprite 1+AA+A*32,X,Y To X+16,Y+16 
  6. '    Hot Spot 1+AA+A*32,7,7
  7. '  Next  
  8. 'Next  
  9. Degree 
  10. Screen Open 0,320,256,2,0
  11. Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  12. Double Buffer : Autoback 0
  13. ' X,Y,SX,SY,M,TYPE 
  14. ' ROT,FIR,TIM,AMMO 
  15. '  
  16. Hide 
  17. Get Sprite Palette 
  18. For A=0 To 15 : Colour A+16,Colour(A) : Next 
  19. Dim O(10+4*10,10)
  20. FAC=128 : SPMAX=384
  21. O(0,0)=64*FAC : O(0,1)=128*FAC
  22. O(0,2)=0 : O(0,3)=0 : O(0,4)=100
  23. O(0,5)=1
  24. O(1,0)=(320-64)*FAC : O(1,1)=127*FAC
  25. O(1,2)=-32 : O(1,3)=-32 : O(1,4)=100
  26. O(1,5)=1
  27. For A=4 To 9
  28.   O(A,0)=Rnd(319)*FAC : O(A,1)=Rnd(255)*FAC : O(A,4)=5000+Rnd(15000)
  29.   O(A,2)=Rnd(64)-32 : O(A,3)=Rnd(64)-32
  30.   O(A,5)=3
  31. Next 
  32. Do 
  33.   Screen Swap : Wait Vbl 
  34.    Extension_8_121C 0,0
  35.   J=1 : P=0
  36.   If Fire(J)
  37.     O(P,7)=1 : W=(O(P,6)+48)*16
  38.     Add O(P,2), Extension_8_1114(W,4)
  39.     Add O(P,3), Extension_8_1106(W,4)
  40.   Else 
  41.     O(P,7)=0
  42.   End If 
  43.   If Jleft(J) Then Add O(P,6),-1,0 To 63
  44.   If Jright(J) Then Add O(P,6),1,0 To 63
  45.   If Jup(J) and O(P,8)=0 Then Gosub SHOT
  46.   J=0 : P=1
  47.   If Fire(J)
  48.     O(P,7)=1 : W=(O(P,6)+48)*16
  49.     Add O(P,2), Extension_8_1114(W,4)
  50.     Add O(P,3), Extension_8_1106(W,4)
  51.   Else 
  52.     O(P,7)=0
  53.   End If 
  54.   If Jleft(J) Then Add O(P,6),-1,0 To 63
  55.   If Jright(J) Then Add O(P,6),1,0 To 63
  56.   If Jup(J) and O(P,8)=0 Then Gosub SHOT
  57.   For O1=0 To 19
  58.     For O2=0 To 9
  59.       If O1<>O2 and O(O1,5)<>0 and O(O2,5)<>0
  60.         DX=(O(O2,0)-O(O1,0))/FAC : DY=(O(O2,1)-O(O1,1))/FAC
  61.         D=DX*DX+DY*DY
  62.         If D>6 and D<10000
  63.           F=(39*O(O2,4))/(D*O(O1,4))
  64.           If F>0
  65.             WN= Extension_8_16C2(DX,DY)
  66.             Add O(O1,2), Extension_8_1114(WN,F)
  67.             Add O(O1,3), Extension_8_1106(WN,F)
  68.           End If 
  69.         Else 
  70.           If D<5
  71.             If O2<4 and O1>3
  72.               Inc O(O2,10)
  73.               O(O2,0)=160*FAC : O(O2,1)=128*FAC : RemO(O2,2)=0 : O(O2,3)=0 
  74. '              O(O1,5)=0 
  75.             Else 
  76. '              O(O1,5)=0 : Add O(O2,4),O(O1,4) 
  77.             End If 
  78.           End If 
  79.         End If 
  80.       End If 
  81.     Next 
  82.   Next 
  83.   Add TIM,1,0 To 4
  84.   For O1=0 To 19
  85.     SX=Min(Max(O(O1,2),-SPMAX),SPMAX)
  86.     SY=Min(Max(O(O1,3),-SPMAX),SPMAX)
  87.     If O1<4
  88.       If TIM=0
  89.         Add SX,-Sgn(SX) : Add SY,-Sgn(SY)
  90.       End If 
  91.       O(O1,2)=SX : O(O1,3)=SY
  92.     End If 
  93.     O(O1,0)=(O(O1,0)+SX+320*FAC) mod(320*FAC)
  94.     O(O1,1)=(O(O1,1)+SY+256*FAC) mod(256*FAC)
  95.   Next 
  96.   Home 
  97.   For P=0 To 3
  98.     If O(P,8) Then Dec O(P,8)
  99.     If O(P,5)
  100.       Sprite P*2,X Hard(O(P,0)/FAC),Y Hard(O(P,1)/FAC),1+32*P+O(P,6)/2+O(P,7)*128
  101.       Print Extension_8_0EB8(O(P,10),3);"  ";
  102.     Else 
  103.       Sprite Off P*2
  104.     End If 
  105.   Next 
  106.   For A=4 To 9
  107.     If O(A,5)
  108.        Extension_8_05E6 O(A,0)/FAC,O(A,1)/FAC,Abs(O(A,4))/2000
  109.     End If 
  110.   Next 
  111.   For A=10 To 19
  112.     If O(A,5)
  113.        Extension_8_0388 O(A,0)/FAC,O(A,1)/FAC,1
  114.       Dec O(A,8)
  115.       If O(A,8)=0 : O(A,5)=0 : End If 
  116.     End If 
  117.   Next 
  118. Loop 
  119. SHOT:
  120.   O(P,8)=8
  121.   For A=10+P*10 To 19+P*10
  122.     If O(A,5)=0
  123.       W=(O(P,6)+48)*16
  124.       SX= Extension_8_1114(W,256) : SY= Extension_8_1106(W,256)
  125.       O(A,0)=O(P,0)+SX*4 : O(A,1)=O(P,1)+SY*4
  126.       O(A,2)=SX : O(A,3)=SY
  127.       O(A,4)=20 : O(A,5)=10+P : O(A,8)=150
  128.       Exit 
  129.     End If 
  130.   Next 
  131. Return